package com.example.adminserivce.domain.dto;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.domain.pojo.Resources;
import com.example.common.enums.FileStatus;
import com.example.common.enums.FileType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.StringUtils;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResourcePage implements Serializable {
    private static final long serialVersionUID = 1L;

    // 筛选条件
    private String courseId;        // 课程ID
    private String teacherId;       // 教师ID
    private String name;            // 资源名称（支持模糊查询）
    private FileStatus status;      // 状态
    private FileType type;          // 类型

    // 分页参数
    private Integer pageNum = 1;    // 页码，默认第1页
    private Integer pageSize = 10;  // 每页数量，默认10条

    // 转换为 MyBatis-Plus 的 Page 对象
    public Page<Resources> toPage() {
        return new Page<>(pageNum, pageSize);
    }

    // 构建查询条件（示例）
    public QueryWrapper<Resources> buildQueryWrapper() {
        QueryWrapper<Resources> wrapper = new QueryWrapper<>();

        // 课程ID精确查询
        if (StringUtils.hasText(courseId)) {
            wrapper.eq("course_id", courseId);
        }

        // 教师ID精确查询
        if (StringUtils.hasText(teacherId)) {
            wrapper.eq("teacher_id", teacherId);
        }

        // 资源名称模糊查询
        if (StringUtils.hasText(name)) {
            wrapper.like("name", name);
        }

        // 状态枚举查询
        if (status != null) {
            wrapper.eq("status", status);
        }

        // 类型枚举查询
        if (type != null) {
            wrapper.eq("type", type);
        }

        // 默认按创建时间降序排序
        wrapper.orderByDesc("create_time");

        return wrapper;
    }
}
